/**
 * Luis Alberto Ordoñez
 * Critian Arteanga
 */

package cliente;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.omg.CORBA.ORB;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
import sop_corba.OperarArreglos;
import sop_corba.OperarArreglosHelper;
import sop_corba.OperarArreglosPackage.miestructuraHolder;

public class ClienteArr
{
    private static BufferedReader bf;
    private static String pausa;
    
    public ClienteArr()
    {
    }

    public static void main(String args[])
    {
        int i = 0;
        int bandera = 0;
        try
        {
            int vec_a[] = new int[10];
            int vec_b[] = new int[10];
            int op;
            miestructuraHolder miestructuraholder = new miestructuraHolder();
            ORB orb = ORB.init(args, ((java.util.Properties) (null)));
            org.omg.CORBA.Object obj = orb.resolve_initial_references("NameService");
            NamingContextExt namingcontextext = NamingContextExtHelper.narrow(obj);
            OperarArreglos operararreglos = OperarArreglosHelper.narrow(namingcontextext.resolve_str("oper_arr"));
            System.out.println((new StringBuilder()).append("\nROR: ").append(operararreglos).toString());
            bf = new BufferedReader(new InputStreamReader(System.in));
            
            do 
            {
                System.out.println("\n====== Menu ======\n");
                System.out.println("1. inicializar arreglos\n");
                System.out.println("2. sumar arreglos\n");
                System.out.println("3. ver resultados\n");
                System.out.println("4. salir\n");
                System.out.println("===================\n");
                System.out.println("Digite la opcion: ");   
                op = Integer.parseInt(bf.readLine());
                
                switch(op)
                {
                case 1: 
                    if(bandera == 0)
                    {
                        System.out.println("Ingrese los valores del arreglo A:\n");
                        for(int k = 0; k < 10; k++)
                        {
                            System.out.println((new StringBuilder()).append("dato ").append(k).append(": ").toString());
                            vec_a[k] = Integer.parseInt(bf.readLine());
                        }

                        System.out.println("Ingrese los valores del arreglo B:\n");
                        for(int l = 0; l < 10; l++)
                        {
                            System.out.println((new StringBuilder()).append("dato ").append(l).append(": ").toString());
                            vec_b[l] = Integer.parseInt(bf.readLine());
                        }

                        operararreglos.iniArreglos(vec_a, vec_b);
                        bandera = 1;
                    } else
                    {
                        System.out.println("Arreglos ya fueron inicializados\n");
                    }
                    System.out.println("\nOprima cualquier tecla para continuar\n");
                    pausa = bf.readLine();
                    break;

                case 2:
                    if(bandera == 1)
                    {
                        System.out.println("\nSumando arreglos ...\n");
                        operararreglos.sumarArreglos(miestructuraholder);
                        bandera = 2;
                    } else
                    {
                        System.out.println("\nPrimero debe inicializar los arreglos\n");
                    }
                    System.out.println("\nOprima cualquier tecla para continuar\n");
                    pausa = bf.readLine();
                    break;

                case 3: 
                    if(bandera == 2)
                    {
                        System.out.println("Suma de los arreglos: \n");
                        for(int i1 = 0; i1 < 10; i1++)
                            System.out.println((new StringBuilder()).append(" | ").append(vec_a[i1]).toString());

                        System.out.println(" | \n");
                        for(int j1 = 0; j1 < 10; j1++)
                            System.out.println((new StringBuilder()).append(" | ").append(vec_b[j1]).toString());

                        System.out.println(" | +\n");
                        System.out.println("_________________________________________\n");
                        for(int k1 = 0; k1 < 10; k1++)
                            System.out.println((new StringBuilder()).append(" | ").append(miestructuraholder.value.res[k1]).toString());

                        System.out.println(" | ");
                        bandera = 0;
                    } else
                    {
                        System.out.println("\nPrimero debe inicializar o sumar los arreglos\n");
                    }
                    System.out.println("\nOprima cualquier tecla para continuar\n");
                    pausa = bf.readLine();
                    break;

                case 4: 
                    break;

                default:
                    System.out.println("opcion no valida");
                    break;
                }
            }while(op!=4);
        }
        catch(Exception exception)
        {
            System.out.println((new StringBuilder()).append("ERROR : ").append(exception).toString());
            exception.printStackTrace(System.out);
        }
    }
}